LSTM (Long Short-Term Memory) এবং GRU (Gated Recurrent Unit) হল Recurrent Neural Networks (RNNs) এর উন্নত ভার্সন, যা বিশেষভাবে টেক্সট, স্পিচ, এবং টাইম সিরিজ ডেটা প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়। LSTM এবং GRU মডেলগুলি দীর্ঘকালীন নির্ভরতা (long-term dependencies) শেখার জন্য অত্যন্ত উপকারী, যেগুলি সাধারণ RNN মডেলগুলি শিখতে পারে না।
Text Classification এর জন্য LSTM বা GRU এর মতো মডেল ব্যবহার করা হয়, যেখানে টেক্সট ডেটা শ্রেণীভিত্তিক করা হয়, যেমন স্প্যাম ইমেইল শ্রেণীকরণ, সেন্টিমেন্ট এনালাইসিস, ভাষা শনাক্তকরণ ইত্যাদি।
এখানে LSTM/GRU ব্যবহার করে টেক্সট ক্লাসিফিকেশন মডেল তৈরি করার জন্য ধাপ-by-ধাপ কোড প্রদান করা হল।
১. প্রয়োজনীয় লাইব্রেরি ইনস্টলেশন
প্রথমে কিছু প্রয়োজনীয় লাইব্রেরি ইনস্টল করতে হবে:
pip install tensorflow
pip install numpy
pip install scikit-learn
২. ডেটা লোড এবং প্রিপ্রসেসিং
টেক্সট ডেটাকে উপযুক্ত ফরম্যাটে প্রিপ্রসেস করা খুবই গুরুত্বপূর্ণ। এখানে Keras এবং Tokenizer ব্যবহার করে টেক্সট ডেটা প্রিপ্রসেস করা হবে।
import numpy as np
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
from sklearn.model_selection import train_test_split
# উদাহরণস্বরূপ টেক্সট এবং লেবেল
texts = ['I love programming', 'Python is awesome', 'I hate bugs', 'Debugging is fun']
labels = [1, 1, 0, 0] # 1 -> Positive, 0 -> Negative
# Tokenizer ব্যবহার করে টেক্সট টোকেনাইজ করা
tokenizer = Tokenizer(num_words=10000) # 10,000 শব্দ পর্যন্ত
tokenizer.fit_on_texts(texts)
# টেক্সটকে সিকোয়েন্সে রূপান্তরিত করা
X = tokenizer.texts_to_sequences(texts)
# সিকোয়েন্সে প্যাডিং দেওয়া
X_pad = pad_sequences(X, padding='post')
# লেবেলকে Numpy array তে রূপান্তর করা
y = np.array(labels)
# ট্রেনিং এবং টেস্ট ডেটা ভাগ করা
X_train, X_test, y_train, y_test = train_test_split(X_pad, y, test_size=0.2, random_state=42)
print(f"Training Data: {X_train.shape}")
print(f"Testing Data: {X_test.shape}")
৩. LSTM/GRU মডেল তৈরি
এখন আমরা LSTM বা GRU মডেল ব্যবহার করে টেক্সট ক্লাসিফিকেশন মডেল তৈরি করব। LSTM এবং GRU মূলত Recurrent layers হিসেবে ব্যবহৃত হয়, যেগুলি টেক্সটের সিকোয়েন্স ডেটা প্রক্রিয়া করতে সক্ষম।
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Embedding, LSTM, GRU, Dense, Dropout
# LSTM বা GRU মডেল তৈরি
def create_model(use_gru=False):
model = Sequential()
# Embedding layer: words কে ভেক্টরে রূপান্তরিত করে
model.add(Embedding(input_dim=10000, output_dim=128, input_length=X_train.shape[1]))
# LSTM বা GRU layer
if use_gru:
model.add(GRU(128, return_sequences=False))
else:
model.add(LSTM(128, return_sequences=False))
# Dropout layer: overfitting কমানোর জন্য
model.add(Dropout(0.5))
# Output layer: সেন্টিমেন্ট (positive or negative)
model.add(Dense(1, activation='sigmoid'))
# মডেল কম্পাইল করা
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
model.summary()
return model
# LSTM মডেল তৈরি
model_lstm = create_model(use_gru=False)
# GRU মডেল তৈরি
model_gru = create_model(use_gru=True)
- Embedding layer: শব্দগুলিকে ভেক্টর ফরম্যাটে রূপান্তরিত করে, যাতে মডেল শব্দের অর্থ শিখতে পারে।
- LSTM/GRU layer: টেক্সটের সিকোয়েন্স শিখতে ব্যবহৃত হয়।
- Dropout layer: Overfitting কমাতে ব্যবহৃত হয়।
- Dense layer: আউটপুট পেতে ব্যবহৃত হয়, যেখানে
sigmoidঅ্যাকটিভেশন ফাংশন ব্যবহার করা হয়, কারণ এটি binary classification এর জন্য উপযুক্ত।
৪. মডেল ট্রেনিং
এখন, তৈরি করা LSTM বা GRU মডেলটি ট্রেন করতে হবে:
# LSTM মডেল ট্রেনিং
model_lstm.fit(X_train, y_train, epochs=5, batch_size=32, validation_data=(X_test, y_test))
# GRU মডেল ট্রেনিং
model_gru.fit(X_train, y_train, epochs=5, batch_size=32, validation_data=(X_test, y_test))
৫. মডেল ইভালুয়েশন
ট্রেনিং শেষে, আমরা মডেলের পারফরম্যান্স ইভালুয়েশন করতে পারি, যেমন accuracy এবং loss মেট্রিক্স দেখতে:
# LSTM মডেলের ইভালুয়েশন
lstm_loss, lstm_accuracy = model_lstm.evaluate(X_test, y_test)
print(f"LSTM Model Loss: {lstm_loss}")
print(f"LSTM Model Accuracy: {lstm_accuracy}")
# GRU মডেলের ইভালুয়েশন
gru_loss, gru_accuracy = model_gru.evaluate(X_test, y_test)
print(f"GRU Model Loss: {gru_loss}")
print(f"GRU Model Accuracy: {gru_accuracy}")
৬. মডেল প্রেডিকশন
এখন আপনি তৈরি করা মডেলটি ব্যবহার করে নতুন টেক্সট ডেটার প্রেডিকশন করতে পারেন:
# LSTM মডেল দিয়ে প্রেডিকশন
lstm_predictions = model_lstm.predict(X_test)
# GRU মডেল দিয়ে প্রেডিকশন
gru_predictions = model_gru.predict(X_test)
# প্রেডিকশন বের করা (0 বা 1)
lstm_pred_class = (lstm_predictions > 0.5).astype("int32")
gru_pred_class = (gru_predictions > 0.5).astype("int32")
print(f"LSTM Model Predicted Classes: {lstm_pred_class}")
print(f"GRU Model Predicted Classes: {gru_pred_class}")
৭. সারাংশ
- LSTM এবং GRU হল Recurrent Neural Networks (RNNs) এর উন্নত ফর্ম, যা টেক্সট ডেটার সিকোয়েন্স ডিপেন্ডেন্সি শিখতে বিশেষভাবে কার্যকরী।
- টেক্সট ক্লাসিফিকেশন মডেল তৈরিতে LSTM এবং GRU ব্যবহার করলে long-term dependencies শিখতে সক্ষম হয়।
- Embedding layer শব্দগুলিকে ভেক্টরে রূপান্তরিত করে এবং LSTM/GRU মডেলগুলিতে পাঠানো হয়।
- মডেলটি ট্রেন করার পর, accuracy, loss, এবং classification report মেট্রিক্স ব্যবহার করে মডেলের পারফরম্যান্স ইভালুয়েশন করা যায়।
এভাবে আপনি LSTM বা GRU ব্যবহার করে টেক্সট ক্লাসিফিকেশন মডেল তৈরি এবং ট্রেন করতে পারেন।
Read more